package main

// 打开文件写内容
import (
	"bufio"
	"fmt"
	"io/ioutil"
	"os"
)

var fileSrc string = "./demo.txt"

// 利用OpenFile()写文件
func writeToFile() {
	// fileObj, err := os.Open(fileSrc)
	// fileObj, err := os.OpenFile(fileSrc, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
	fileObj, err := os.OpenFile(fileSrc, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	defer fileObj.Close()
	// Write
	fileObj.Write([]byte("发货  安抚"))
	// WriteString
	fileObj.WriteString("发货安抚")
}

// 利用bufio.NewWriter()创建缓冲区写入
func writeToFileBybufio() {
	fileObj, err := os.OpenFile(fileSrc, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	defer fileObj.Close()
	// 创建一个写的对象
	wr := bufio.NewWriter(fileObj)
	wr.WriteString("hello say") // 写入缓存
	wr.Flush()                  // 缓存中的内容写入文件
}

// 利用ioutil.WriteFile()将字节切片写入
func writeToFileByioutil() {
	str := "abcdfff"
	err := ioutil.WriteFile(fileSrc, []byte(str), 0666)
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
}

// 文件操作
func main() {
	// writeToFile()
	// writeToFileBybufio()
	writeToFileByioutil()
}
